package com.beemans.common.app

import android.os.Build
import com.beemans.common.utils.CommonCacheUtils
import com.beemans.common.utils.NetUtils
import com.beemans.common.utils.TelephoneUtils
import com.blankj.utilcode.util.AppUtils
import com.blankj.utilcode.util.DeviceUtils
import com.blankj.utilcode.util.LanguageUtils
import com.blankj.utilcode.util.RomUtils
import java.net.URLEncoder
import java.util.*

/**
 * @author tiamosu
 * @date 2021/3/12
 */
@Suppress("unused")
object CommonConfig {

    /**
     * APP版本名
     */
    val versionName: String by lazy { AppUtils.getAppVersionName() }

    /**
     * APP版本大小
     */
    val versionCode: Int by lazy { AppUtils.getAppVersionCode() }

    /**
     * 应用包名
     */
    val packageName: String by lazy { AppUtils.getAppPackageName() }

    /**
     * 固件版本号（androidXX）
     */
    val systemVersion: String by lazy { DeviceUtils.getSDKVersionName() }

    /**
     * 设备型号
     */
    val deviceModel: String by lazy { URLEncoder.encode(DeviceUtils.getModel(), "UTF-8") }

    /**
     * 设备名称
     */
    val deviceName: String by lazy { Build.DEVICE ?: deviceModel }

    /**
     * 系统语言
     */
    val localLanguage: String by lazy { LanguageUtils.getAppContextLanguage().language }

    /**
     * 国家域名
     */
    val localCountry: String by lazy { LanguageUtils.getAppContextLanguage().country }

    /**
     * 国家时区编码
     */
    val timeZone: String by lazy {
        val timeZone = TimeZone.getDefault()
        timeZone.getDisplayName(false, TimeZone.SHORT)
    }

    /**
     * 网络类型
     */
    val networkType: String
        get() = NetUtils.getNetType()

    /**
     * 应用名称
     */
    val appName by lazy { AppUtils.getAppName() }

    /**
     * 获取 androidId
     */
    val androidId: String by lazy { DeviceUtils.getAndroidID() }

    /**
     * 获取imei
     */
    val imei: String by lazy { TelephoneUtils.getIMEI() }

    /**
     * 获取mac
     */
    val macAddress: String by lazy { DeviceUtils.getMacAddress() }

    /**
     * Rom信息
     */
    val romInfo by lazy { RomUtils.getRomInfo() }

    /**
     * 判断手机设备为华为
     */
    val isHuaWei by lazy { romInfo.name == "honor" || RomUtils.isHuawei() }

    /**
     * 服务端下发的TopOn广告位ID配置
     */
    private val tpAdConfig by lazy { CommonCacheUtils.tpAdConfig }

    /**
     * 获取开屏广告位id
     */
    val tpSplashAdCode by lazy { tpAdConfig.splashAdCode.trim() }

    /**
     * 获取插屏广告位id
     */
    val tpInsertAdCode by lazy { tpAdConfig.insertAdCode.trim() }

    /**
     * 获取激励视频广告位id
     */
    val tpRewardAdCode by lazy { tpAdConfig.rewardAdCode.trim() }

    /**
     * 获取金币弹框信息流广告位id
     */
    val tpCoinNativeAdCode by lazy { tpAdConfig.coinNativeAdCode.trim() }

    /**
     * 获取其他信息流广告位id
     */
    val tpOtherNativeAdCode by lazy { tpAdConfig.otherNativeAdCode.trim() }

    /**
     * 获取退出应用弹框信息流广告位id
     */
    val tpExitNativeAdCode by lazy { tpAdConfig.exitNativeAdCode.trim() }

    /**
     * 获取幸运抽奖激励视频广告位id
     */
    val tpTbCouponRewardAdCode by lazy { tpAdConfig.tbCouponRewardAdCode.trim() }
}